{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Predicting Flight Delays with sklearn\n",
    "\n",
    "In this notebook, we will be using features we've prepared in PySpark to predict flight delays via regression and classification."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Imports loaded...\n"
     ]
    }
   ],
   "source": [
    "import sys, os, re\n",
    "sys.path.append(\"lib\")\n",
    "import utils\n",
    "\n",
    "import numpy as np\n",
    "import sklearn\n",
    "import iso8601\n",
    "import datetime\n",
    "print(\"Imports loaded...\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Load and Inspect our JSON Training Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Original JSON file size: 1,676,709,758 Bytes\n",
      "Training items: 5,714,008\n",
      "Data loaded...\n"
     ]
    }
   ],
   "source": [
    "# Load and check the size of our training data. May take a minute.\n",
    "print(\"Original JSON file size: {:,} Bytes\".format(os.path.getsize(\"../data/simple_flight_delay_features.jsonl\")))\n",
    "training_data = utils.read_json_lines_file('../data/simple_flight_delay_features.jsonl')\n",
    "print(\"Training items: {:,}\".format(len(training_data))) # 5,714,008\n",
    "print(\"Data loaded...\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Size of training data in RAM: 50,897,424 Bytes\n",
      "{'DayOfWeek': 4, 'ArrDelay': 13.0, 'Dest': 'DFW', 'FlightDate': '2014-12-31T16:00:00.000-08:00', 'Carrier': 'AA', 'Distance': 569.0, 'FlightNum': '1024', 'CRSArrTime': '2015-01-01T10:10:00.000-08:00', 'CRSDepTime': '2015-01-01T07:30:00.000-08:00', 'DayOfMonth': 1, 'DayOfYear': 1, 'DepDelay': 14.0, 'Origin': 'ABQ'}\n"
     ]
    }
   ],
   "source": [
    "# Inspect a record before we alter them\n",
    "print(\"Size of training data in RAM: {:,} Bytes\".format(sys.getsizeof(training_data))) # 50MB\n",
    "print(training_data[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Sample our Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sampled items: 1,000,000 Bytes\n",
      "Data sampled...\n"
     ]
    }
   ],
   "source": [
    "# We need to sample our data to fit into RAM\n",
    "training_data = np.random.choice(training_data, 1000000) # 'Sample down to 1MM examples'\n",
    "print(\"Sampled items: {:,} Bytes\".format(len(training_data)))\n",
    "print(\"Data sampled...\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Vectorize the Results (y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Results vectorized size: 8,000,096\n",
      "Results vectorized...\n"
     ]
    }
   ],
   "source": [
    "# Separate our results from the rest of the data, vectorize and size up\n",
    "results = [record['ArrDelay'] for record in training_data]\n",
    "results_vector = np.array(results)\n",
    "print(\"Results vectorized size: {:,}\".format(sys.getsizeof(results_vector))) # 45,712,160 bytes\n",
    "print(\"Results vectorized...\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Prepare Training Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ArrDelay and FlightDate removed from training data...\n"
     ]
    }
   ],
   "source": [
    "# Remove the two delay fields and the flight date from our training data\n",
    "for item in training_data:\n",
    "  item.pop('ArrDelay', None)\n",
    "  item.pop('FlightDate', None)\n",
    "print(\"ArrDelay and FlightDate removed from training data...\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CRSArr/DepTime converted to unix time...\n"
     ]
    }
   ],
   "source": [
    "# Must convert datetime strings to unix times\n",
    "for item in training_data:\n",
    "  if isinstance(item['CRSArrTime'], str):\n",
    "    dt = iso8601.parse_date(item['CRSArrTime'])\n",
    "    unix_time = int(dt.timestamp())\n",
    "    item['CRSArrTime'] = unix_time\n",
    "  if isinstance(item['CRSDepTime'], str):\n",
    "    dt = iso8601.parse_date(item['CRSDepTime'])\n",
    "    unix_time = int(dt.timestamp())\n",
    "    item['CRSDepTime'] = unix_time\n",
    "print(\"CRSArr/DepTime converted to unix time...\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Vectorize Training Data with `DictVectorizer`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sampled dimensions: [1,000,000]\n",
      "Size of DictVectorized vectors: 87,539,400 Bytes\n",
      "Training data vectorized...\n"
     ]
    }
   ],
   "source": [
    "# Use DictVectorizer to convert feature dicts to vectors\n",
    "from sklearn.feature_extraction import DictVectorizer\n",
    "\n",
    "print(\"Sampled dimensions: [{:,}]\".format(len(training_data)))\n",
    "vectorizer = DictVectorizer()\n",
    "training_vectors = vectorizer.fit_transform(training_data)\n",
    "print(\"Size of DictVectorized vectors: {:,} Bytes\".format(training_vectors.data.nbytes))\n",
    "print(\"Training data vectorized...\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Prepare Experiment by Splitting Data into Train/Test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(900000, 7436) (100000, 7436)\n",
      "(900000,) (100000,)\n",
      "Test train split performed...\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(\n",
    "  training_vectors,\n",
    "  results_vector,\n",
    "  test_size=0.1,\n",
    "  random_state=43\n",
    ")\n",
    "print(X_train.shape, X_test.shape)\n",
    "print(y_train.shape, y_test.shape)\n",
    "print(\"Test train split performed...\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Train our Model(s) on our Training Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Regressor library and metrics imported...\n"
     ]
    }
   ],
   "source": [
    "# Train a regressor\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import median_absolute_error, r2_score\n",
    "print(\"Regressor library and metrics imported...\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Regressor instantiated...\n"
     ]
    }
   ],
   "source": [
    "regressor = LinearRegression()\n",
    "print(\"Regressor instantiated...\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Swapped gradient boosting trees for linear regression!\n",
      "Swapped back to linear regression!\n"
     ]
    }
   ],
   "source": [
    "from sklearn.ensemble import GradientBoostingRegressor\n",
    "\n",
    "regressor = GradientBoostingRegressor\n",
    "print(\"Swapped gradient boosting trees for linear regression!\")\n",
    "\n",
    "# Lets go back for now...\n",
    "regressor = LinearRegression()\n",
    "print(\"Swapped back to linear regression!\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Regressor fitted...\n"
     ]
    }
   ],
   "source": [
    "regressor.fit(X_train, y_train)\n",
    "print(\"Regressor fitted...\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Predict Using the Test Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predictions made for X_test...\n"
     ]
    }
   ],
   "source": [
    "predicted = regressor.predict(X_test)\n",
    "print(\"Predictions made for X_test...\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Evaluate and Visualize Model Accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Median absolute error:    9.68\n",
      "r2 score:                 0.828\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import median_absolute_error, r2_score\n",
    "\n",
    "# Median absolute error is the median of all absolute differences between the target and the prediction.\n",
    "# Less is better, more indicates a high error between target and prediction.\n",
    "medae = median_absolute_error(y_test, predicted)\n",
    "print(\"Median absolute error:    {:.3g}\".format(medae))\n",
    "\n",
    "# R2 score is the coefficient of determination. Ranges from 1-0, 1.0 is best, 0.0 is worst.\n",
    "# Measures how well future samples are likely to be predicted.\n",
    "r2 = r2_score(y_test, predicted)\n",
    "print(\"r2 score:                 {:.3g}\".format(r2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nE+DhygAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1169fd550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot outputs\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Cleans up the appearance\n",
    "plt.rcdefaults()\n",
    "\n",
    "plt.scatter(\n",
    "  y_test,\n",
    "  predicted,\n",
    "  color='blue',\n",
    "  linewidth=1\n",
    ")\n",
    "plt.grid(True)\n",
    "\n",
    "plt.xticks()\n",
    "plt.yticks()\n",
    "\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [default]",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
